//
//  YFThreeDItem.h
//  PaddleTennisDemo
//
//  Created by Coollang on 2017/11/2.
//  Copyright © 2017年 Coollang-YF. All rights reserved.
//

#import <UIKit/UIKit.h>
#import "YFBluetoothConstant.h"
#import <Realm/Realm.h>

@interface YFThreeDDetailItem :RLMObject

@property NSString *q0;
@property NSString *q1;
@property NSString *q2;
@property NSString *q3;

@property NSInteger gx;
@property NSInteger gy;
@property NSInteger gz;

@property NSInteger ax;
@property NSInteger ay;
@property NSInteger az;

@property NSInteger indexI;

@property float vx;
@property float vy;
@property float vz;

- (void)parseThreeDDetailItemFormDeviceDict:(NSDictionary *)dict;
// 给3D界面配置的显示数据
- (NSDictionary *)dictionaryToThreeDView;
- (NSNumber *)strength;
- (NSNumber *)speed;

@end
RLM_ARRAY_TYPE(YFThreeDDetailItem)

@interface YFThreeDItem : RLMObject

@property NSString *identification;

@property NSInteger groupCount;     // 总包数
@property SportPoseType actionType; // 姿态
@property NSInteger swingSpeed;     // 速度
@property CGFloat strength;         // 力度
@property long long unixTimeStamp;  // 时间戳
@property NSInteger swingTime;      // 挥拍时间
@property NSInteger startID;        //有效数据开始ID
@property NSInteger endID;          //有效数据结束ID
@property NSInteger maxSpeedId;     //最大拍速ID

/*------------挥拍属性-----------*/
@property BOOL isHitBall;           //是否击中球
@property HandDirectionType handType;  // 正反手
@property JCHandBallType handBallType; //上下手球
@property ServeDirectionType serveDirectionType;//出球方向
@property NSInteger areaValue;   ///区域

/** 动作详细类型 */
@property ThreeDTemplateType templateType;

@property float matchScore;             //匹配得分

@property  RLMArray <YFThreeDDetailItem *><YFThreeDDetailItem>* threeDDetailItems;

+ (ThreeDTemplateType)handDirectionType:(HandDirectionType)handType andActionType:(SportPoseType)actionType;

- (NSString *)typeString;

// 日期
- (NSString *)dateString;

// 硬件传过来的数据
- (void)parseThreeDItemFormDeviceDict:(NSDictionary *)dict;

/**
 * 正反拍面处理 :（作用：正反拍面匹配后结果一致）
 *
 * 模板和3D数据都需要进行此步处理
 */
- (void)disposeForeBackFaceOfRacket:(NSArray <YFThreeDDetailItem *>*)modeArray;

// 截取有效的3d数据并转成数组
- (NSArray *)getValidThreeDDetailItemsData;

// 模型转数据字典
- (NSDictionary *)threeDItemToDictionary;

@end
RLM_ARRAY_TYPE(YFThreeDItem)


